<?php
/***************************************************************
*  Copyright notice
*  (c) 2009, jianyuzhu@gmail.com
*  All rights reserved
*  This script is part of the PPEMI project.
***************************************************************/

class LibMime {
	
	//constructor
	function LibMime() {
		//
		$this->mime_types = array(
			'3dm'    => 'x-world/x-3dmf',
			'3dmf'   => 'x-world/x-3dmf',
			'a'      => 'application/octet-stream',
			'aab'    => 'application/x-authorware-bin',
			'aam'    => 'application/x-authorware-map',
			'aas'    => 'application/x-authorware-seg',
			'abc'    => 'text/vnd.abc',
			'acgi'   => 'text/html',
			'afl'    => 'video/animaflex',
			'ai'     => 'application/postscript',
			'aif'    => 'audio/aiff',
			'aif'    => 'audio/x-aiff',
			'aifc'   => 'audio/aiff',
			'aifc'   => 'audio/x-aiff',
			'aiff'   => 'audio/aiff',
			'aiff'   => 'audio/x-aiff',
			'aim'    => 'application/x-aim',
			'aip'    => 'text/x-audiosoft-intra',
			'ani'    => 'application/x-navi-animation',
			'aos'    => 'application/x-nokia-9000-communicator-add-on-software',
			'aps'    => 'application/mime',
			'arc'    => 'application/octet-stream',
			'arj'    => 'application/arj',
			'arj'    => 'application/octet-stream',
			'art'    => 'image/x-jg',
			'asf'    => 'video/x-ms-asf',
			'asm'    => 'text/x-asm',
			'asp'    => 'text/asp',
			'asx'    => 'application/x-mplayer2',
			'asx'    => 'video/x-ms-asf',
			'asx'    => 'video/x-ms-asf-plugin',
			'au'     => 'audio/basic',
			'au'     => 'audio/x-au',
			'avi'    => 'application/x-troff-msvideo',
			'avi'    => 'video/avi',
			'avi'    => 'video/msvideo',
			'avi'    => 'video/x-msvideo',
			'avs'    => 'video/avs-video',
			'bcpio'  => 'application/x-bcpio',
			'bin'    => 'application/mac-binary',
			'bin'    => 'application/macbinary',
			'bin'    => 'application/octet-stream',
			'bin'    => 'application/x-binary',
			'bin'    => 'application/x-macbinary',
			'bm'     => 'image/bmp',
			'bmp'    => 'image/bmp',
			'bmp'    => 'image/x-windows-bmp',
			'boo'    => 'application/book',
			'book'   => 'application/book',
			'boz'    => 'application/x-bzip2',
			'bsh'    => 'application/x-bsh',
			'bz'     => 'application/x-bzip',
			'bz2'    => 'application/x-bzip2',
			'c'      => 'text/plain',
			'c'      => 'text/x-c',
			'c++'    => 'text/plain',
			'cat'    => 'application/vnd.ms-pki.seccat',
			'cc'     => 'text/plain',
			'cc'     => 'text/x-c',
			'ccad'   => 'application/clariscad',
			'cco'    => 'application/x-cocoa',
			'cdf'    => 'application/cdf',
			'cdf'    => 'application/x-cdf',
			'cdf'    => 'application/x-netcdf',
			'cer'    => 'application/pkix-cert',
			'cer'    => 'application/x-x509-ca-cert',
			'cha'    => 'application/x-chat',
			'chat'   => 'application/x-chat',
			'class'  => 'application/java',
			'class'  => 'application/java-byte-code',
			'class'  => 'application/x-java-class',
			'com'    => 'application/octet-stream',
			'com'    => 'text/plain',
			'conf'   => 'text/plain',
			'cpio'   => 'application/x-cpio',
			'cpp'    => 'text/x-c',
			'cpt'    => 'application/mac-compactpro',
			'cpt'    => 'application/x-compactpro',
			'cpt'    => 'application/x-cpt',
			'crl'    => 'application/pkcs-crl',
			'crl'    => 'application/pkix-crl',
			'crt'    => 'application/pkix-cert',
			'crt'    => 'application/x-x509-ca-cert',
			'crt'    => 'application/x-x509-user-cert',
			'csh'    => 'application/x-csh',
			'csh'    => 'text/x-script.csh',
			'css'    => 'application/x-pointplus',
			'css'    => 'text/css',
			'cxx'    => 'text/plain',
			'dcr'    => 'application/x-director',
			'deepv'  => 'application/x-deepv',
			'def'    => 'text/plain',
			'der'    => 'application/x-x509-ca-cert',
			'dif'    => 'video/x-dv',
			'dir'    => 'application/x-director',
			'dl'     => 'video/dl',
			'dl'     => 'video/x-dl',
			'doc'    => 'application/msword',
			'dot'    => 'application/msword',
			'dp'     => 'application/commonground',
			'drw'    => 'application/drafting',
			'dump'   => 'application/octet-stream',
			'dv'     => 'video/x-dv',
			'dvi'    => 'application/x-dvi',
			'dwf'    => 'model/vnd.dwf',
			'dwg'    => 'application/acad',
			'dwg'    => 'image/vnd.dwg',
			'dwg'    => 'image/x-dwg',
			'dxf'    => 'application/dxf',
			'dxf'    => 'image/vnd.dwg',
			'dxf'    => 'image/x-dwg',
			'dxr'    => 'application/x-director',
			'el'     => 'text/x-script.elisp',
			'elc'    => 'application/x-bytecode.elisp',
			'elc'    => 'application/x-elc',
			'env'    => 'application/x-envoy',
			'eps'    => 'application/postscript',
			'es'     => 'application/x-esrehber',
			'etx'    => 'text/x-setext',
			'evy'    => 'application/envoy',
			'evy'    => 'application/x-envoy',
			'exe'    => 'application/octet-stream',
			'f'      => 'text/plain',
			'f'      => 'text/x-fortran',
			'f77'    => 'text/x-fortran',
			'f90'    => 'text/plain',
			'f90'    => 'text/x-fortran',
			'fdf'    => 'application/vnd.fdf',
			'fif'    => 'application/fractals',
			'fif'    => 'image/fif',
			'fli'    => 'video/fli',
			'fli'    => 'video/x-fli',
			'flo'    => 'image/florian',
			'flx'    => 'text/vnd.fmi.flexstor',
			'fmf'    => 'video/x-atomic3d-feature',
			'for'    => 'text/plain',
			'for'    => 'text/x-fortran',
			'fpx'    => 'image/vnd.fpx',
			'fpx'    => 'image/vnd.net-fpx',
			'frl'    => 'application/freeloader',
			'funk'   => 'audio/make',
			'g'      => 'text/plain',
			'g3'     => 'image/g3fax',
			'gif'    => 'image/gif',
			'gl'     => 'video/gl',
			'gl'     => 'video/x-gl',
			'gsd'    => 'audio/x-gsm',
			'gsm'    => 'audio/x-gsm',
			'gsp'    => 'application/x-gsp',
			'gss'    => 'application/x-gss',
			'gtar'   => 'application/x-gtar',
			'gz'     => 'application/x-compressed',
			'gz'     => 'application/x-gzip',
			'gzip'   => 'application/x-gzip',
			'gzip'   => 'multipart/x-gzip',
			'h'      => 'text/plain',
			'h'      => 'text/x-h',
			'hdf'    => 'application/x-hdf',
			'help'   => 'application/x-helpfile',
			'hgl'    => 'application/vnd.hp-hpgl',
			'hh'     => 'text/plain',
			'hh'     => 'text/x-h',
			'hlb'    => 'text/x-script',
			'hlp'    => 'application/hlp',
			'hlp'    => 'application/x-helpfile',
			'hlp'    => 'application/x-winhelp',
			'hpg'    => 'application/vnd.hp-hpgl',
			'hpgl'   => 'application/vnd.hp-hpgl',
			'hqx'    => 'application/binhex',
			'hqx'    => 'application/binhex4',
			'hqx'    => 'application/mac-binhex',
			'hqx'    => 'application/mac-binhex40',
			'hqx'    => 'application/x-binhex40',
			'hqx'    => 'application/x-mac-binhex40',
			'hta'    => 'application/hta',
			'htc'    => 'text/x-component',
			'htm'    => 'text/html',
			'html'   => 'text/html',
			'htmls'  => 'text/html',
			'htt'    => 'text/webviewhtml',
			'htx'    => 'text/html',
			'ice'    => 'x-conference/x-cooltalk',
			'ico'    => 'image/x-icon',
			'idc'    => 'text/plain',
			'ief'    => 'image/ief',
			'iefs'   => 'image/ief',
			'iges'   => 'application/iges',
			'iges'   => 'model/iges',
			'igs'    => 'application/iges',
			'igs'    => 'model/iges',
			'ima'    => 'application/x-ima',
			'imap'   => 'application/x-httpd-imap',
			'inf'    => 'application/inf',
			'ins'    => 'application/x-internett-signup',
			'ip'     => 'application/x-ip2',
			'isu'    => 'video/x-isvideo',
			'it'     => 'audio/it',
			'iv'     => 'application/x-inventor',
			'ivr'    => 'i-world/i-vrml',
			'ivy'    => 'application/x-livescreen',
			'jam'    => 'audio/x-jam',
			'jav'    => 'text/plain',
			'jav'    => 'text/x-java-source',
			'java'   => 'text/plain',
			'java'   => 'text/x-java-source',
			'jcm'    => 'application/x-java-commerce',
			'jfif'   => 'image/jpeg',
			'jfif'   => 'image/pjpeg',
			'jfif-tbnl' => 'image/jpeg',
			'jpe'    => 'image/jpeg',
			'jpe'    => 'image/pjpeg',
			'jpeg'   => 'image/jpeg',
			'jpeg'   => 'image/pjpeg',
			'jpg'    => 'image/jpeg',
			'jpg'    => 'image/pjpeg',
			'jps'    => 'image/x-jps',
			'js'     => 'application/x-javascript',
			'jut'    => 'image/jutvision',
			'kar'    => 'audio/midi',
			'kar'    => 'music/x-karaoke',
			'ksh'    => 'application/x-ksh',
			'ksh'    => 'text/x-script.ksh',
			'la'     => 'audio/nspaudio',
			'la'     => 'audio/x-nspaudio',
			'lam'    => 'audio/x-liveaudio',
			'latex'  => 'application/x-latex',
			'lha'    => 'application/lha',
			'lha'    => 'application/octet-stream',
			'lha'    => 'application/x-lha',
			'lhx'    => 'application/octet-stream',
			'list'   => 'text/plain',
			'lma'    => 'audio/nspaudio',
			'lma'    => 'audio/x-nspaudio',
			'log'    => 'text/plain',
			'lsp'    => 'application/x-lisp',
			'lsp'    => 'text/x-script.lisp',
			'lst'    => 'text/plain',
			'lsx'    => 'text/x-la-asf',
			'ltx'    => 'application/x-latex',
			'lzh'    => 'application/octet-stream',
			'lzh'    => 'application/x-lzh',
			'lzx'    => 'application/lzx',
			'lzx'    => 'application/octet-stream',
			'lzx'    => 'application/x-lzx',
			'm'      => 'text/plain',
			'm'      => 'text/x-m',
			'm1v'    => 'video/mpeg',
			'm2a'    => 'audio/mpeg',
			'm2v'    => 'video/mpeg',
			'm3u'    => 'audio/x-mpequrl',
			'man'    => 'application/x-troff-man',
			'map'    => 'application/x-navimap',
			'mar'    => 'text/plain',
			'mbd'    => 'application/mbedlet',
			'mc$'    => 'application/x-magic-cap-package-1.0',
			'mcd'    => 'application/mcad',
			'mcd'    => 'application/x-mathcad',
			'mcf'    => 'image/vasa',
			'mcf'    => 'text/mcf',
			'mcp'    => 'application/netmc',
			'me'     => 'application/x-troff-me',
			'mht'    => 'message/rfc822',
			'mhtml'  => 'message/rfc822',
			'mid'    => 'application/x-midi',
			'mid'    => 'audio/midi',
			'mid'    => 'audio/x-mid',
			'mid'    => 'audio/x-midi',
			'mid'    => 'music/crescendo',
			'mid'    => 'x-music/x-midi',
			'midi'   => 'application/x-midi',
			'midi'   => 'audio/midi',
			'midi'   => 'audio/x-mid',
			'midi'   => 'audio/x-midi',
			'midi'   => 'music/crescendo',
			'midi'   => 'x-music/x-midi',
			'mif'    => 'application/x-frame',
			'mif'    => 'application/x-mif',
			'mime'   => 'message/rfc822',
			'mime'   => 'www/mime',
			'mjf'    => 'audio/x-vnd.audioexplosion.mjuicemediafile',
			'mjpg'   => 'video/x-motion-jpeg',
			'mm'     => 'application/base64',
			'mm'     => 'application/x-meme',
			'mme'    => 'application/base64',
			'mod'    => 'audio/mod',
			'mod'    => 'audio/x-mod',
			'moov'   => 'video/quicktime',
			'mov'    => 'video/quicktime',
			'movie'  => 'video/x-sgi-movie',
			'mp2'    => 'audio/mpeg',
			'mp2'    => 'audio/x-mpeg',
			'mp2'    => 'video/mpeg',
			'mp2'    => 'video/x-mpeg',
			'mp2'    => 'video/x-mpeq2a',
			'mp3'    => 'audio/mpeg3',
			'mp3'    => 'audio/x-mpeg-3',
			'mp3'    => 'video/mpeg',
			'mp3'    => 'video/x-mpeg',
			'mpa'    => 'audio/mpeg',
			'mpa'    => 'video/mpeg',
			'mpc'    => 'application/x-project',
			'mpe'    => 'video/mpeg',
			'mpeg'   => 'video/mpeg',
			'mpg'    => 'audio/mpeg',
			'mpg'    => 'video/mpeg',
			'mpga'   => 'audio/mpeg',
			'mpp'    => 'application/vnd.ms-project',
			'mpt'    => 'application/x-project',
			'mpv'    => 'application/x-project',
			'mpx'    => 'application/x-project',
			'mrc'    => 'application/marc',
			'ms'     => 'application/x-troff-ms',
			'mv'     => 'video/x-sgi-movie',
			'my'     => 'audio/make',
			'mzz'    => 'application/x-vnd.audioexplosion.mzz',
			'nap'    => 'image/naplps',
			'naplps' => 'image/naplps',
			'nc'     => 'application/x-netcdf',
			'ncm'    => 'application/vnd.nokia.configuration-message',
			'nif'    => 'image/x-niff',
			'niff'   => 'image/x-niff',
			'nix'    => 'application/x-mix-transfer',
			'nsc'    => 'application/x-conference',
			'nvd'    => 'application/x-navidoc',
			'o'      => 'application/octet-stream',
			'oda'    => 'application/oda',
			'omc'    => 'application/x-omc',
			'omcd'   => 'application/x-omcdatamaker',
			'omcr'   => 'application/x-omcregerator',
			'p'      => 'text/x-pascal',
			'p10'    => 'application/pkcs10',
			'p10'    => 'application/x-pkcs10',
			'p12'    => 'application/pkcs-12',
			'p12'    => 'application/x-pkcs12',
			'p7a'    => 'application/x-pkcs7-signature',
			'p7c'    => 'application/pkcs7-mime',
			'p7c'    => 'application/x-pkcs7-mime',
			'p7m'    => 'application/pkcs7-mime',
			'p7m'    => 'application/x-pkcs7-mime',
			'p7r'    => 'application/x-pkcs7-certreqresp',
			'p7s'    => 'application/pkcs7-signature',
			'part'   => 'application/pro_eng',
			'pas'    => 'text/pascal',
			'pbm'    => 'image/x-portable-bitmap',
			'pcl'    => 'application/vnd.hp-pcl',
			'pcl'    => 'application/x-pcl',
			'pct'    => 'image/x-pict',
			'pcx'    => 'image/x-pcx',
			'pdb'    => 'chemical/x-pdb',
			'pdf'    => 'application/pdf',
			'pfunk'  => 'audio/make',
			'pfunk'  => 'audio/make.my.funk',
			'pgm'    => 'image/x-portable-graymap',
			'pgm'    => 'image/x-portable-greymap',
			'pic'    => 'image/pict',
			'pict'   => 'image/pict',
			'pkg'    => 'application/x-newton-compatible-pkg',
			'pko'    => 'application/vnd.ms-pki.pko',
			'pl'     => 'text/plain',
			'pl'     => 'text/x-script.perl',
			'plx'    => 'application/x-pixclscript',
			'pm'     => 'image/x-xpixmap',
			'pm'     => 'text/x-script.perl-module',
			'pm4'    => 'application/x-pagemaker',
			'pm5'    => 'application/x-pagemaker',
			'png'    => 'image/png',
			'pnm'    => 'application/x-portable-anymap',
			'pnm'    => 'image/x-portable-anymap',
			'pot'    => 'application/mspowerpoint',
			'pot'    => 'application/vnd.ms-powerpoint',
			'pov'    => 'model/x-pov',
			'ppa'    => 'application/vnd.ms-powerpoint',
			'ppm'    => 'image/x-portable-pixmap',
			'pps'    => 'application/mspowerpoint',
			'pps'    => 'application/vnd.ms-powerpoint',
			'ppt'    => 'application/mspowerpoint',
			'ppt'    => 'application/powerpoint',
			'ppt'    => 'application/vnd.ms-powerpoint',
			'ppt'    => 'application/x-mspowerpoint',
			'ppz'    => 'application/mspowerpoint',
			'pre'    => 'application/x-freelance',
			'prt'    => 'application/pro_eng',
			'ps'     => 'application/postscript',
			'psd'    => 'application/octet-stream',
			'pvu'    => 'paleovu/x-pv',
			'pwz'    => 'application/vnd.ms-powerpoint',
			'py'     => 'text/x-script.phyton',
			'pyc'    => 'applicaiton/x-bytecode.python',
			'qcp'    => 'audio/vnd.qcelp',
			'qd3'    => 'x-world/x-3dmf',
			'qd3d'   => 'x-world/x-3dmf',
			'qif'    => 'image/x-quicktime',
			'qt'     => 'video/quicktime',
			'qtc'    => 'video/x-qtc',
			'qti'    => 'image/x-quicktime',
			'qtif'   => 'image/x-quicktime',
			'ra'     => 'audio/x-pn-realaudio',
			'ra'     => 'audio/x-pn-realaudio-plugin',
			'ra'     => 'audio/x-realaudio',
			'ram'    => 'audio/x-pn-realaudio',
			'ras'    => 'application/x-cmu-raster',
			'ras'    => 'image/cmu-raster',
			'ras'    => 'image/x-cmu-raster',
			'rast'   => 'image/cmu-raster',
			'rexx'   => 'text/x-script.rexx',
			'rf'     => 'image/vnd.rn-realflash',
			'rgb'    => 'image/x-rgb',
			'rm'     => 'application/vnd.rn-realmedia',
			'rm'     => 'audio/x-pn-realaudio',
			'rmi'    => 'audio/mid',
			'rmm'    => 'audio/x-pn-realaudio',
			'rmp'    => 'audio/x-pn-realaudio',
			'rmp'    => 'audio/x-pn-realaudio-plugin',
			'rng'    => 'application/ringing-tones',
			'rng'    => 'application/vnd.nokia.ringing-tone',
			'rnx'    => 'application/vnd.rn-realplayer',
			'roff'   => 'application/x-troff',
			'rp'     => 'image/vnd.rn-realpix',
			'rpm'    => 'audio/x-pn-realaudio-plugin',
			'rt'     => 'text/richtext',
			'rt'     => 'text/vnd.rn-realtext',
			'rtf'    => 'application/rtf',
			'rtf'    => 'application/x-rtf',
			'rtf'    => 'text/richtext',
			'rtx'    => 'application/rtf',
			'rtx'    => 'text/richtext',
			'rv'     => 'video/vnd.rn-realvideo',
			's'      => 'text/x-asm',
			's3m'    => 'audio/s3m',
			'saveme' => 'application/octet-stream',
			'sbk'    => 'application/x-tbook',
			'scm'    => 'application/x-lotusscreencam',
			'scm'    => 'text/x-script.guile',
			'scm'    => 'text/x-script.scheme',
			'scm'    => 'video/x-scm',
			'sdml'   => 'text/plain',
			'sdp'    => 'application/sdp',
			'sdp'    => 'application/x-sdp',
			'sdr'    => 'application/sounder',
			'sea'    => 'application/sea',
			'sea'    => 'application/x-sea',
			'set'    => 'application/set',
			'sgm'    => 'text/sgml',
			'sgm'    => 'text/x-sgml',
			'sgml'   => 'text/sgml',
			'sgml'   => 'text/x-sgml',
			'sh'     => 'application/x-bsh',
			'sh'     => 'application/x-sh',
			'sh'     => 'application/x-shar',
			'sh'     => 'text/x-script.sh',
			'shar'   => 'application/x-bsh',
			'shar'   => 'application/x-shar',
			'shtml'  => 'text/html',
			'shtml'  => 'text/x-server-parsed-html',
			'sid'    => 'audio/x-psid',
			'sit'    => 'application/x-sit',
			'sit'    => 'application/x-stuffit',
			'skd'    => 'application/x-koan',
			'skm'    => 'application/x-koan',
			'skp'    => 'application/x-koan',
			'skt'    => 'application/x-koan',
			'sl'     => 'application/x-seelogo',
			'smi'    => 'application/smil',
			'smil'   => 'application/smil',
			'snd'    => 'audio/basic',
			'snd'    => 'audio/x-adpcm',
			'sol'    => 'application/solids',
			'spc'    => 'application/x-pkcs7-certificates',
			'spc'    => 'text/x-speech',
			'spl'    => 'application/futuresplash',
			'spr'    => 'application/x-sprite',
			'sprite' => 'application/x-sprite',
			'src'    => 'application/x-wais-source',
			'ssi'    => 'text/x-server-parsed-html',
			'ssm'    => 'application/streamingmedia',
			'sst'    => 'application/vnd.ms-pki.certstore',
			'step'   => 'application/step',
			'stl'    => 'application/sla',
			'stl'    => 'application/vnd.ms-pki.stl',
			'stl'    => 'application/x-navistyle',
			'stp'    => 'application/step',
			'sv4cpio'=> 'application/x-sv4cpio',
			'sv4crc' => 'application/x-sv4crc',
			'svf'    => 'image/vnd.dwg',
			'svf'    => 'image/x-dwg',
			'svr'    => 'application/x-world',
			'svr'    => 'x-world/x-svr',
			'swf'    => 'application/x-shockwave-flash',
			't'      => 'application/x-troff',
			'talk'   => 'text/x-speech',
			'tar'    => 'application/x-tar',
			'tbk'    => 'application/toolbook',
			'tbk'    => 'application/x-tbook',
			'tcl'    => 'application/x-tcl',
			'tcl'    => 'text/x-script.tcl',
			'tcsh'   => 'text/x-script.tcsh',
			'tex'    => 'application/x-tex',
			'texi'   => 'application/x-texinfo',
			'texinfo'=> 'application/x-texinfo',
			'text'   => 'application/plain',
			'text'   => 'text/plain',
			'tgz'    => 'application/gnutar',
			'tgz'    => 'application/x-compressed',
			'tif'    => 'image/tiff',
			'tif'    => 'image/x-tiff',
			'tiff'   => 'image/tiff',
			'tiff'   => 'image/x-tiff',
			'tr'     => 'application/x-troff',
			'tsi'    => 'audio/tsp-audio',
			'tsp'    => 'application/dsptype',
			'tsp'    => 'audio/tsplayer',
			'tsv'    => 'text/tab-separated-values',
			'turbot' => 'image/florian',
			'txt'    => 'text/plain',
			'uil'    => 'text/x-uil',
			'uni'    => 'text/uri-list',
			'unis'   => 'text/uri-list',
			'unv'    => 'application/i-deas',
			'uri'    => 'text/uri-list',
			'uris'   => 'text/uri-list',
			'ustar'  => 'application/x-ustar',
			'ustar'  => 'multipart/x-ustar',
			'uu'     => 'application/octet-stream',
			'uu'     => 'text/x-uuencode',
			'uue'    => 'text/x-uuencode',
			'vcd'    => 'application/x-cdlink',
			'vcs'    => 'text/x-vcalendar',
			'vda'    => 'application/vda',
			'vdo'    => 'video/vdo',
			'vew'    => 'application/groupwise',
			'viv'    => 'video/vivo',
			'viv'    => 'video/vnd.vivo',
			'vivo'   => 'video/vivo',
			'vivo'   => 'video/vnd.vivo',
			'vmd'    => 'application/vocaltec-media-desc',
			'vmf'    => 'application/vocaltec-media-file',
			'voc'    => 'audio/voc',
			'voc'    => 'audio/x-voc',
			'vos'    => 'video/vosaic',
			'vox'    => 'audio/voxware',
			'vqe'    => 'audio/x-twinvq-plugin',
			'vqf'    => 'audio/x-twinvq',
			'vql'    => 'audio/x-twinvq-plugin',
			'vrml'   => 'application/x-vrml',
			'vrml'   => 'model/vrml',
			'vrml'   => 'x-world/x-vrml',
			'vrt'    => 'x-world/x-vrt',
			'vsd'    => 'application/x-visio',
			'vst'    => 'application/x-visio',
			'vsw'    => 'application/x-visio',
			'w60'    => 'application/wordperfect6.0',
			'w61'    => 'application/wordperfect6.1',
			'w6w'    => 'application/msword',
			'wav'    => 'audio/wav',
			'wav'    => 'audio/x-wav',
			'wb1'    => 'application/x-qpro',
			'wbmp'   => 'image/vnd.wap.wbmp',
			'web'    => 'application/vnd.xara',
			'wiz'    => 'application/msword',
			'wk1'    => 'application/x-123',
			'wmf'    => 'windows/metafile',
			'wml'    => 'text/vnd.wap.wml',
			'wmlc'   => 'application/vnd.wap.wmlc',
			'wmls'   => 'text/vnd.wap.wmlscript',
			'wmlsc'  => 'application/vnd.wap.wmlscriptc',
			'word'   => 'application/msword',
			'wp'     => 'application/wordperfect',
			'wp5'    => 'application/wordperfect',
			'wp5'    => 'application/wordperfect6.0',
			'wp6'    => 'application/wordperfect',
			'wpd'    => 'application/wordperfect',
			'wpd'    => 'application/x-wpwin',
			'wq1'    => 'application/x-lotus',
			'wri'    => 'application/mswrite',
			'wri'    => 'application/x-wri',
			'wrl'    => 'application/x-world',
			'wrl'    => 'model/vrml',
			'wrl'    => 'x-world/x-vrml',
			'wrz'    => 'model/vrml',
			'wrz'    => 'x-world/x-vrml',
			'wsc'    => 'text/scriplet',
			'wsrc'   => 'application/x-wais-source',
			'wtk'    => 'application/x-wintalk',
			'xbm'    => 'image/x-xbitmap',
			'xbm'    => 'image/x-xbm',
			'xbm'    => 'image/xbm',
			'xdr'    => 'video/x-amt-demorun',
			'xgz'    => 'xgl/drawing',
			'xif'    => 'image/vnd.xiff',
			'xl'     => 'application/excel',
			'xla'    => 'application/excel',
			'xla'    => 'application/x-excel',
			'xla'    => 'application/x-msexcel',
			'xlb'    => 'application/excel',
			'xlb'    => 'application/vnd.ms-excel',
			'xlb'    => 'application/x-excel',
			'xlc'    => 'application/excel',
			'xlc'    => 'application/vnd.ms-excel',
			'xlc'    => 'application/x-excel',
			'xld'    => 'application/excel',
			'xld'    => 'application/x-excel',
			'xlk'    => 'application/excel',
			'xlk'    => 'application/x-excel',
			'xll'    => 'application/excel',
			'xll'    => 'application/vnd.ms-excel',
			'xll'    => 'application/x-excel',
			'xlm'    => 'application/excel',
			'xlm'    => 'application/vnd.ms-excel',
			'xlm'    => 'application/x-excel',
			'xls'    => 'application/excel',
			'xls'    => 'application/vnd.ms-excel',
			'xls'    => 'application/x-excel',
			'xls'    => 'application/x-msexcel',
			'xlt'    => 'application/excel',
			'xlt'    => 'application/x-excel',
			'xlv'    => 'application/excel',
			'xlv'    => 'application/x-excel',
			'xlw'    => 'application/excel',
			'xlw'    => 'application/vnd.ms-excel',
			'xlw'    => 'application/x-excel',
			'xlw'    => 'application/x-msexcel',
			'xm'     => 'audio/xm',
			'xml'    => 'application/xml',
			'xml'    => 'text/xml',
			'xmz'    => 'xgl/movie',
			'xpix'   => 'application/x-vnd.ls-xpix',
			'xpm'    => 'image/x-xpixmap',
			'xpm'    => 'image/xpm',
			'x-png'  => 'image/png',
			'xsr'    => 'video/x-amt-showrun',
			'xwd'    => 'image/x-xwd',
			'xwd'    => 'image/x-xwindowdump',
			'xyz'    => 'chemical/x-pdb',
			'z'      => 'application/x-compress',
			'z'      => 'application/x-compressed',
			'zip'    => 'application/x-compressed',
			'zip'    => 'application/x-zip-compressed',
			'zip'    => 'application/zip',
			'zip'    => 'multipart/x-zip',
			'zoo'    => 'application/octet-stream',
			'zsh'    => 'text/x-script.zsh',
			'txt'    => 'text/plain',
			'htm'    => 'text/html',
			'html'   => 'text/html',
			'php'    => 'application/x-httpd-php',
			'phps'   => 'application/x-httpd-phps',
			'css'    => 'text/css',
			'js'     => 'application/javascript',
			'json'   => 'application/json',
			'xml'    => 'application/xml',
			'swf'    => 'application/x-shockwave-flash',
			'flv'    => 'video/x-flv',
			'asc'    => 'text/plain',
			'atom'   => 'application/atom+xml',
			'bcpio'  => 'application/x-bcpio',
			'png'    => 'image/png',
			'jpe'    => 'image/jpeg',
			'jpeg'   => 'image/jpeg',
			'jpg'    => 'image/jpeg',
			'gif'    => 'image/gif',
			'bmp'    => 'image/bmp',
			'ico'    => 'image/vnd.microsoft.icon',
			'tiff'   => 'image/tiff',
			'tif'    => 'image/tiff',
			'svg'    => 'image/svg+xml',
			'svgz'   => 'image/svg+xml',
			'zip'    => 'application/zip',
			'rar'    => 'application/x-rar-compressed',
			'exe'    => 'application/x-msdownload',
			'msi'    => 'application/x-msdownload',
			'cab'    => 'application/vnd.ms-cab-compressed',
			'mp3'    => 'audio/mpeg',
			'qt'     => 'video/quicktime',
			'mov'    => 'video/quicktime',
			'au'     => 'audio/basic',
			'avi'    => 'video/x-msvideo',
			'pdf'    => 'application/pdf',
			'psd'    => 'image/vnd.adobe.photoshop',
			'ai'     => 'application/postscript',
			'eps'    => 'application/postscript',
			'ps'     => 'application/postscript',
			'aif'    => 'audio/x-aiff',
			'aifc'   => 'audio/x-aiff',
			'aiff'   => 'audio/x-aiff',
			'doc'    => 'application/msword',
			'rtf'    => 'application/rtf',
			'xls'    => 'application/vnd.ms-excel',
			'ppt'    => 'application/vnd.ms-powerpoint',
			'odt'    => 'application/vnd.oasis.opendocument.text',
			'ods'    => 'application/vnd.oasis.opendocument.spreadsheet',
			'swf'    => 'application/x-shockwave-flash',
			'swf'    => 'application/x-shockwave-flash2-preview',
			'swf'    => 'application/futuresplash',
			'swf'    => 'image/vnd.rn-realflash'
				);
	}
	
	//methods
	function getMimeType($filename) {
		if( $filename != '' && is_file($filename) ) {
			$mime_type = '';
			if( function_exists('finfo_open') ) {
				$finfo = finfo_open(FILEINFO_MIME);
				$mime_type = finfo_file($finfo, $filename);
				finfo_close($finfo);
			} else {
				$ext = $this->getFileExtension($filename);
				if( array_key_exists($ext, $this->mime_types) ) {
					return $this->mime_types[$ext];	
				} elseif( function_exists('mime_content_type') ) {
					$mime_type = mime_content_type($filename);	
				}
			}
			if( empty($mime_type) ) {
				$mime_type = 'application/octet-stream';
			}
			
			return $mime_type;
		}
		
		return '';
	}
	
	function getFileExtension($filename) {
		$ext = strtolower(array_pop(explode('.', $filename)));
		
		return $ext;
	}
}
//
?>